/* eslint-disable no-use-before-define */
import axios, { type Paging, type Response } from '@/utils/axios/axios';

/** 得到轮播图列表 */
export function getAppBannerListAxios(data: AppBannerListRequest): Promise<Response<Paging<AppBanner>>> {
  const _data: AppBannerListRequest = JSON.parse(JSON.stringify(data));

  if (!([1, 2, 3] as (number | string)[]).includes(data.bannerType ?? -1)) {
    delete _data.bannerType;
  }
  return axios.get(`/system/banner/page`, { params: _data }) as unknown as Promise<Response<Paging<AppBanner>>>;
}

/** 删除轮播图 */
export function delAppBannerAxios(bannerId: number): Promise<Response<string>> {
  return axios.delete(`/system/banner/remove`, { params: { bannerId } }) as unknown as Promise<Response<string>>;
}

/** 停用或者启用轮播图 */
export function changeStatusAppBannerAxios(bannerId: number): Promise<Response<string>> {
  return axios.post(`/system/banner/updateStatus`, { bannerId }) as unknown as Promise<Response<string>>;
}

/** 新增轮播图 */
export function addAppBannerAxios(data: AppBannerRequest): Promise<Response<string>> {
  return axios.post(`/system/banner/add`, data) as unknown as Promise<Response<string>>;
}

/** 编辑轮播图 */
export function editAppBannerAxios(data: AppBannerRequest): Promise<Response<string>> {
  return axios.post(`/system/banner/edit`, data) as unknown as Promise<Response<string>>;
}

/** 得到短剧列表 */
export function getPullDownListAxios(): Promise<Response<Drama[]>> {
  return axios.get(`/system/drama/getPullDownList`) as unknown as Promise<Response<Drama[]>>;
}

/** 得到 APP 的数据字典 */
export function getAppBaseDictAxios(): Promise<Response<AppBaseDict>> {
  return axios.get(`/system/dict/getAppBaseDict`) as unknown as Promise<Response<AppBaseDict>>;
}

/** 修改 APP 的数据字典 */
export function editAppBaseDictAxios(data: Omit<AppBaseDict, 'priceVirtualRate'>): Promise<Response<string>> {
  return axios.post(`/system/dict/updateAppBaseDict`, data) as unknown as Promise<Response<string>>;
}

/** 小程序列表  -- 分页 */
export function getMiniProgramList(data: MiniProgramListRequest): Promise<Response<Paging<MiniProgramListItem>>> {
  return axios.get(`/system/social/page`, { params: data }) as unknown as Promise<Response<Paging<MiniProgramListItem>>>;
}

/** 新增小程序 */
export function addMiniProgram(data: MiniProgramListItem): Promise<Response<MiniProgramListItem>> {
  return axios.post(`/system/social/addModule`, data) as unknown as Promise<Response<MiniProgramListItem>>;
}

/** 修改小程序 */
export function editMiniProgram(data: MiniProgramListItem): Promise<Response<MiniProgramListItem>> {
  return axios.post(`/system/social/updateModule`, data) as unknown as Promise<Response<MiniProgramListItem>>;
}

/** 删除小程序 */
export function delMiniProgram(socialId: number): Promise<Response<string>> {
  return axios.get(`/system/social/removeApplet?socialId=${socialId}`) as unknown as Promise<Response<string>>;
}

export type MiniProgramListRequest = {
  /** 当前页 */
  current: number;
  /** 每页数量 */
  size: number;
  appName?: string;
  type?: string;
};

export type AppBaseDict = {
  /** 客服电话 */
  appCustomorTel: string | null;
  /** 抖音客服账号 */
  dySupportStaff: string | null;
  /** K币兑换比列 */
  priceVirtualRate: string | null;
};

export type AppBannerListRequest = {
  /** 当前页 */
  current: number;
  /** 每页数量 */
  size: number;
  /** 类型：1-首页；2-追剧；3-推荐 */
  bannerType?: '' | 1 | 2 | 3;
};

export type AppBannerRequest = {
  /** 轮播图 ID */
  bannerId?: number | null;
  /** 需要跳转的链接 */
  bannerLink?: string | null;
  /** 类型：1-首页；2-追剧；3-推荐；  */
  bannerType: 1 | 2 | 3;
  /** 短剧 ID  */
  businessId?: number;
  /** 轮播图的图片链接 */
  bannerUrl: string;
  /** 跳转类型：1-视频；2-链接； */
  jumpType: 1 | 2;
};

export type AppBanner = {
  /** 横幅id */
  bannerId: number;
  /** 需要跳转的链接 */
  bannerLink: string;
  /** 类型：1-首页；2-追剧；3-推荐 */
  bannerType: 1 | 2 | 3;
  /** 轮播图的图片链接 */
  bannerUrl: string;
  /** 业务id  */
  businessId: number;
  /** 状态：0-启用；1-停用 */
  status: 0 | 1;
  /** 跳转类型：1-视频；2-链接； */
  jumpType: 1 | 2;
  /** 短剧名称 */
  dramaTitle: string;
};

export type Drama = {
  /** 短剧id */
  dramaId: number;
  /** 短剧名称 */
  dramaTitle: string;
};

export interface MiniProgramListItem {
  /**
   * 平台编码
   */
  appCode?: string | null;
  /**
   * 第三方app_id
   */
  appId?: string | null;
  /**
   * 名称
   */
  appName?: string | null;
  /**
   * 微信原始id
   */
  appOriginalId?: string | null;
  /**
   * 第三方app_secret
   */
  appSecret?: string | null;
  /**
   * 创建人
   */
  createBy?: string | null;
  /**
   * 创建时间
   */
  createTime?: string | null;
  /**
   * 状态：0-未删除； 1-已删除
   */
  delFlag?: number | null;
  /**
   * 是否是上传短剧主号：0-否；1-是；
   */
  mainFlag?: number | null;
  /**
   * 第三方商户id
   */
  mchId?: string | null;
  /**
   * 微信支付应用ID
   */
  offerId?: string | null;
  /**
   * 支付通知地址
   */
  payNotifyUrl?: string | null;
  /**
   * 抖音支付salt
   */
  paySalt?: string | null;
  /**
   * 抖音、微信支付token令牌
   */
  payToken?: string | null;
  /**
   * 抖音平台公钥
   */
  platformPublicKey?: string | null;
  /**
   * 抖音应用私钥
   */
  privateKey?: string | null;
  /**
   * 微信现网AppKey
   */
  prodAppKey?: string | null;
  /**
   * 回调地址
   */
  redirectUrl?: string | null;
  /**
   * 备注
   */
  remark?: string | null;
  /**
   * 三方账号主键id
   */
  socialId?: number | null;
  /**
   * 抖音交易规则标签组
   */
  tagGroupId?: string | null;
  /**
   * 微信沙箱AppKey
   */
  testAppKey?: string | null;
  /**
   * 平台类型
   */
  type: 'mp-kuaishou' | 'mp-toutiao' | 'mp-weixin';
  /**
   * 修改人
   */
  updateBy?: string | null;
  /**
   * 更新时间
   */
  updateTime?: string | null;
  /**
   * 代码上传密钥
   */
  uploadKey?: string | null;
}
